package fr.template.www.presentation.bean;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author lesHauts
 */
public class PanierBean {

    private List<LigneProduitPanierBean> listeLignes = new ArrayList<>();
    private BigDecimal prixTotal;

    /**
     * Permet de connaître l'état du panier
     * @return true si le panier est vide
     */
    public boolean isVide() {
        return listeLignes.isEmpty();
    }

    /**
     * calcule le prix total des produits du panier
     * @return le prix total du panier
     */
    private BigDecimal calculPrixPanier() {
        BigDecimal prix = new BigDecimal(0);
        for (LigneProduitPanierBean maLigne : listeLignes) {
            prix = prix.add(maLigne.getPrix());
        }
        return prix;
    }

    /**
     * Obtient la liste de ligne du panier
     * @return liste de ligne du panier
     */
    public List<LigneProduitPanierBean> getListeLignes() {
        verifQte();
        return listeLignes;
    }
    
    /**
     * ajoute une ligne au panier
     * @param ligneProduit la ligne à ajouter
     */
    public void addLignePanier(LigneProduitPanierBean ligneProduit){
        boolean estPresent=false;
        for(LigneProduitPanierBean ligneProduitList :listeLignes){
            if(ligneProduit.getProduit().equals(ligneProduitList.getProduit())){
                estPresent=true;
                int qte=ligneProduitList.getQuantite()+ligneProduit.getQuantite();
                ligneProduitList.setQuantite(qte);
            }
        }
        if (!estPresent) {
            listeLignes.add(ligneProduit);
        }
    }

    /**
     * Obtient le prix total du panier
     * @return 
     */
    public BigDecimal getPrixTotal() {
        if (!listeLignes.isEmpty())
        {
            return calculPrixPanier();
        }
        return new BigDecimal(0);
    }
    
    /**
     * retire les produits sans quantités
     */
    private void verifQte(){
        for(LigneProduitPanierBean ligne:listeLignes){
            if(ligne.getQuantite()<1){
                listeLignes.remove(ligne);
            }
        }
    }
}
